<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const myfunc = (function(){
            class Person{
                constructor(){
                    this.name = '张三';
                    this.single(); //只执行一次
                }

                single(){
                    // 多次请求 多次访问  只执行一次
                }

                init(...args){
                    // 多次请求 每一次都会执行的  
                    console.log(args); 
                }

            }

            // 单例核心代码 
            let instance = null;
            return function(...args){
                if(!instance){
                    instance = new Person(...args);
                }
                instance.init(...args); // 执行多次
                return instance;
            }
        })()

        const p1 = new myfunc('hello');
        console.log(p1);
        const p2 = new myfunc('world');
        console.log(p2);

        console.log(p1 === p2);
        // 基本数据类型  三个等号  比较的是值和类型都相等  
        // 引用数据类型  三个等号  比较的是地址是否相等



        // 当我们链接数据库  创建数据库链接池 
        // 可以使用单例模式  只创建一个链接池
        // 上面的代码  支持每个人都有自己的用户名 和 密码 
        // 但是链接池依然是同一个  
        
        
    </script>
</body>
</html>